/*
 * GameMap.h
 *
 *  Created on: 16.04.2012
 *      Author: Caffeine
 */

#ifndef GAMEMAP_H_
#define GAMEMAP_H_

#include <irrlicht.h>


class GameMap:public virtual irr::IReferenceCounted{
private:
	irr::scene::IMetaTriangleSelector*selector;
	irr::scene::ISceneManager*smgr;
public:
	GameMap(irr::IrrlichtDevice*d);
	~GameMap();
	/**
	 * Добовляет селектор в глобальный мето-селектор
	 *
	 * @param ts селектор, который нужно добавить
	 */
	void addToCollision(irr::scene::ITriangleSelector*ts);

	/**
	 * Добовляет объекту свойство колизии, добовляя ему селектор
	 *
	 * @param node объект, которому нужно добавить колизию
	 * @param Triangle если TRUE, то нужно сравнивать колизию по треугольникам, иначе по кубам
	 */
	void addToCollision(irr::scene::IAnimatedMeshSceneNode*node,bool Triangle);

	void removeFromCollision(irr::scene::ITriangleSelector*ts);

	void removeFromCollision(irr::scene::ISceneNode*ts);

	/*
	 * Возвращяет мето-селектор
	 *
	 * @return мето-селектор
	 */
	irr::scene::IMetaTriangleSelector*getSelector();

	/***
	 * Проверяет и загружает нужные локации в зависимости от данного обекта
	 *
	 * @param pl объект, относительно которого нужно проверять
	 */
	virtual void check(irr::core::vector3df position)=0;

	//virtual bool getHeight(irr::f32 X,irr::f32 Z,irr::f32*pos=0);
	//virtual bool getHeight(irr::core::vector3df p,irr::f32*pos=0);
	//virtual bool getHeightEx(irr::core::vector3df p,irr::f32*pos);
};



#endif /* GAMEMAP_H_ */
